package ;
import HLex;
import Files;
import HLex;
import Macro;
import Main;
import Scope;
import Subs;
import Writer;




    
    
    enum State {
        sNoise (x:String);
        sImport(x:String);
        sIdent (x:String);
        sDatum(x:String);
        sInteger(x:String);
        
        sCons;
        
        sRealScope(x:Scope); 
        sScope (x:Array<State>);
        
        sCall  (args:Array<Array<State>>);
        
        sMImport(x:String);
        sMixin (scope:MacroScope, x:String,args:Array<String>,postamble:Array<State>, mac:Macro);
        sExpand(scope:MacroScope, x:String,args:Array<String>,postamble:Array<State>, mac:Macro);
        sDefine(scope:MacroScope, newfile:Bool, preamble:Array<State>, x:String, args:Array<String>, postamble:Array<State>, mac:Macro);
        
        sArgument(macroid:Int,cnt:Int); 
    }
    
    enum MacroScope {
        sLocal;
        sGlobal;
        sFile;
        sObject;
        sMethod;
    }

class HLlr {
	public static var errors:Array<String>;

	public static function parse(input:Array<Terminal>):Dynamic {
		errors = new Array<String>();

		var _ = aE;
        var actions = [[aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aG(112),aG(1),_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(2),_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),_,aS(107),aS(77),aS(78),aS(79),aS(2),aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(25),_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(3),_,_,_,_,_,_,_,_,_,_,_,_,aG(5),_,_,_,_,_,_,_,_,_,_,_,_],[aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),_,aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(4),_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(0),_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),_,aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(28),aS(6),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),_,aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(7),_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(1),_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),_,aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(15),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(16),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(17),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(18),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(19),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aS(97),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(21),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),aR(33),_,aG(20),_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(49),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(56),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(61),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(68),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),aS(74),aS(30),_,aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(88),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aS(89),aS(107),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(108),_,_,_,_,_,_,_,aG(22),_,_],[aR(32),_,aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),aR(32),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(25),_,_,_,_,_,_,_,_,_,_,_,aS(70),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(26),_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(25),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(27),_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(4),_,aR(4),aR(4),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(72),_,aS(28),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(28),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(80),_,_,_,_,_,_,_,_,_],[_,_,aS(29),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(3),_,aR(3),aR(3),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,_,_,aG(32),_,_,aG(75),_,_,_,_,_,_,aG(91),_],[_,_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),aR(6),_,_,_,aG(33),_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aR(54),aR(54),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(34),_,_,_,_,_,_,_,_,_,_],[_,_,aS(35),aS(36),aS(37),aS(38),aS(39),aS(40),aS(43),aS(63),aS(23),aS(12),_,aS(30),aR(53),aR(53),aS(77),aS(78),aS(79),_,aS(24),aS(81),aS(82),aS(83),aS(84),aS(85),aS(86),aS(87),_,_,_,_,aG(34),_,_,_,_,_,_,_,_,_,_],[_,_,aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),_,aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),_,aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),aR(5),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(8),_,aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),aR(8),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(21),_,aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),aR(21),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(22),_,aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),aR(22),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(23),_,aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),aR(23),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(24),_,aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),aR(24),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(36),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(92),aS(93),aS(94),aS(95),aS(96),_,_,_,_,_,_,_,_,_,aG(41),_,_,_,_,_,_,_],[_,_,aS(13),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(42),_,_,_,_,_,_],[aR(27),_,aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),aR(27),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(103),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(92),aS(93),aS(94),aS(95),aS(96),aS(102),aS(104),_,_,_,_,_,_,_,aG(44),_,_,aG(51),aG(58),_,_,_],[_,_,aR(42),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(102),aR(42),_,_,_,_,_,_,_,_,_,_,aG(45),_,_,_,_],[_,_,aS(103),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(104),_,_,_,_,_,_,_,_,_,_,_,aG(46),_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aS(47),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(109),_,_,_,_,_,_,_,_,_,_,_,aR(55),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(48),_,_,_,_,aG(101)],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(8),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(50),_,_,_,_,_,_,_,_,_],[aR(30),_,aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),aR(30),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(36),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(92),aS(93),aS(94),aS(95),aS(96),_,aR(36),_,_,_,_,_,_,_,aG(52),_,_,_,_,_,_,_],[_,_,aS(103),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(104),_,_,_,_,_,_,_,_,_,_,_,aG(53),_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aS(54),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(109),_,_,_,_,_,_,_,_,_,_,_,aR(55),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(55),_,_,_,_,aG(101)],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(9),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(57),_,_,_,_,_,_,_,_,_],[aR(29),_,aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),aR(29),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aS(59),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(109),_,_,_,_,_,_,_,_,_,_,_,aR(55),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(60),_,_,_,_,aG(101)]].concat([[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(10),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(62),_,_,_,_,_,_,_,_,_],[aR(31),_,aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),aR(31),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(36),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(92),aS(93),aS(94),aS(95),aS(96),_,_,_,_,_,_,_,_,_,aG(64),_,_,_,_,_,_,_],[_,_,aS(65),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aS(66),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(109),_,_,_,_,_,_,_,_,_,_,_,aR(55),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(67),_,_,_,_,aG(101)],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(11),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(69),_,_,_,_,_,_,_,_,_],[aR(28),_,aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),aR(28),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(71),_,_,_,_,_,_,_,_,_],[aR(25),_,aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),aR(25),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(73),_,_,_,_,_,_,_,_,_],[aR(26),_,aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),aR(26),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(13),_,aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),aR(13),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(76),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(14),_,aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),aR(14),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(10),_,aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),aR(10),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(11),_,aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),aR(11),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(9),_,aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),aR(9),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(12),_,aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),aR(12),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(16),_,aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),aR(16),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(17),_,aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),aR(17),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(15),_,aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),aR(15),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(18),_,aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),aR(18),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(19),_,aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),aR(19),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(20),_,aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),aR(20),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(7),_,aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),aR(7),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(99),_,_,_,_,_,_,_,_,_],[aR(50),_,aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aS(90),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),aR(50),_,_,_,_,_,aG(100),_,_,_,_,_,_,_,_,_],[aR(49),_,aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),aR(49),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(52),aS(31),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(38),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(38),aR(38),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(39),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(39),aR(39),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(37),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(37),aR(37),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(40),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(40),aR(40),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(41),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(41),aR(41),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(109),_,_,_,_,_,_,_,_,_,_,_,aR(55),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aG(98),_,_,_,_,aG(101)],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(14),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(47),_,aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),aR(47),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(48),_,aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),aR(48),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(56),aS(110),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aR(43),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(43),aR(43),aR(43),aR(43),aR(43),_,aR(43),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(103),_,_,_,_,_,_,_,_,_,_,aR(44),_,_,_,_,_,_,_,_,_,_,_,_,_,aS(104),_,_,_,_,_,_,_,_,_,_,_,aG(105),_,_,_],[_,_,aS(103),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,aS(104),_,_,_,_,_,_,_,_,_,_,_,aG(106),_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aR(46),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,aR(45),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(35),_,aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),aR(35),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aR(34),_,aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),aR(34),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(58),aR(58),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,aS(111),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_,_,_,_,_,_,aR(57),aR(57),_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],[aA,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_]]);

        var rules = [{ cb : R0, sym : 28 , cnt : 4 },{ cb : R1, sym : 28 , cnt : 5 },{ cb : R2, sym : 28 , cnt : 1 },{ cb : R3, sym : 30 , cnt : 3 },{ cb : R4, sym : 30 , cnt : 1 },{ cb : R5, sym : 31 , cnt : 2 },{ cb : R6, sym : 31 , cnt : 0 },{ cb : R7, sym : 32 , cnt : 1 },{ cb : R8, sym : 32 , cnt : 1 },{ cb : R9, sym : 32 , cnt : 1 },{ cb : R10, sym : 32 , cnt : 1 },{ cb : R11, sym : 32 , cnt : 1 },{ cb : R12, sym : 32 , cnt : 3 },{ cb : R13, sym : 32 , cnt : 3 },{ cb : R14, sym : 32 , cnt : 3 },{ cb : R15, sym : 32 , cnt : 1 },{ cb : R16, sym : 32 , cnt : 1 },{ cb : R17, sym : 32 , cnt : 1 },{ cb : R18, sym : 32 , cnt : 1 },{ cb : R19, sym : 32 , cnt : 1 },{ cb : R20, sym : 32 , cnt : 1 },{ cb : R21, sym : 32 , cnt : 1 },{ cb : R22, sym : 32 , cnt : 1 },{ cb : R23, sym : 32 , cnt : 1 },{ cb : R24, sym : 32 , cnt : 1 },{ cb : R25, sym : 32 , cnt : 3 },{ cb : R26, sym : 32 , cnt : 4 },{ cb : R27, sym : 32 , cnt : 3 },{ cb : R28, sym : 32 , cnt : 9 },{ cb : R29, sym : 32 , cnt : 10 },{ cb : R30, sym : 32 , cnt : 10 },{ cb : R31, sym : 32 , cnt : 8 },{ cb : R32, sym : 29 , cnt : 2 },{ cb : R33, sym : 29 , cnt : 0 },{ cb : R34, sym : 40 , cnt : 1 },{ cb : R35, sym : 40 , cnt : 1 },{ cb : R36, sym : 35 , cnt : 0 },{ cb : R37, sym : 35 , cnt : 1 },{ cb : R38, sym : 35 , cnt : 1 },{ cb : R39, sym : 35 , cnt : 1 },{ cb : R40, sym : 35 , cnt : 1 },{ cb : R41, sym : 35 , cnt : 1 },{ cb : R42, sym : 38 , cnt : 0 },{ cb : R43, sym : 38 , cnt : 1 },{ cb : R44, sym : 39 , cnt : 1 },{ cb : R45, sym : 39 , cnt : 2 },{ cb : R46, sym : 39 , cnt : 2 },{ cb : R47, sym : 36 , cnt : 7 },{ cb : R48, sym : 36 , cnt : 4 },{ cb : R49, sym : 33 , cnt : 1 },{ cb : R50, sym : 33 , cnt : 0 },{ cb : R51, sym : 34 , cnt : 0 },{ cb : R52, sym : 34 , cnt : 1 },{ cb : R53, sym : 41 , cnt : 3 },{ cb : R54, sym : 41 , cnt : 1 },{ cb : R55, sym : 37 , cnt : 0 },{ cb : R56, sym : 37 , cnt : 1 },{ cb : R57, sym : 42 , cnt : 3 },{ cb : R58, sym : 42 , cnt : 1 }];

		var entry_state = 0;

var stack = new Array<Int>();
var ret = new Array<Dynamic>();

var cur = input.pop();
var cstate = entry_state;

while(cur!=null) {
	var action = actions[cstate][cur.id];
	
	
	switch(action) {
		case aS(id):
			ret.push(cur);
			stack.push(cstate);
			cstate = id;
			cur = input.pop();
		case aR(id):
			var c = rules[id];
			c.cb(ret);
			
			if(c.cnt>0) {
				for(i in 0...c.cnt-1) stack.pop();
				cstate = stack[stack.length-1];
			}else stack.push(cstate);
			
			var goto = actions[cstate][c.sym];
			switch(goto) { case aG(id): cstate = id; default: }
		case aA:
			break;
		case aE:
			if(cur != Terminal.ERROR) {
				
				input.push(cur = Terminal.ERROR);
			} else {
				ret.pop();
				if(stack.length==0) break;
				cstate = stack.pop();
			}
		default:
	}
}

return if(ret.length==0) null else ret[0];
	}

	private static inline function R0(ret:Array<Dynamic>) {
		
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ {packages: "", scope: hllr__0.concat(hllr__3)}; }));
	}
	private static inline function R1(ret:Array<Dynamic>) {
		
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ {packages: hllr__2, scope: hllr__4}; }));
	}
	private static inline function R2(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ {packages: "", scope: hllr__0}; }));
	}
	private static inline function R3(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0+"."+hllr__2.data; }));
	}
	private static inline function R4(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0.data; }));
	}
	private static inline function R5(ret:Array<Dynamic>) {
		
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0.push(hllr__1); hllr__0; }));
	}
	private static inline function R6(ret:Array<Dynamic>) {
		
		ret.push(({ []; }));
	}
	private static inline function R7(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise(hllr__0.data); }));
	}
	private static inline function R8(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sIdent(hllr__0.data); }));
	}
	private static inline function R9(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sCons; }));
	}
	private static inline function R10(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('.'); }));
	}
	private static inline function R11(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise(';'); }));
	}
	private static inline function R12(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ sImport(hllr__1); }));
	}
	private static inline function R13(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ sScope(hllr__1); }));
	}
	private static inline function R14(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ sCall(hllr__1); }));
	}
	private static inline function R15(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('local'); }));
	}
	private static inline function R16(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('global'); }));
	}
	private static inline function R17(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('file'); }));
	}
	private static inline function R18(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('object'); }));
	}
	private static inline function R19(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('method'); }));
	}
	private static inline function R20(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise('newfile'); }));
	}
	private static inline function R21(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sDatum(hllr__0.data); }));
	}
	private static inline function R22(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sDatum(hllr__0.data); }));
	}
	private static inline function R23(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sInteger(hllr__0.data); }));
	}
	private static inline function R24(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sDatum(hllr__0.data); }));
	}
	private static inline function R25(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ sMImport(""); }));
	}
	private static inline function R26(ret:Array<Dynamic>) {
		
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ sMImport(hllr__1); }));
	}
	private static inline function R27(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__2(hllr__1); }));
	}
	private static inline function R28(ret:Array<Dynamic>) {
		
		var hllr__8 = ret.pop();
		var hllr__7 = ret.pop();
		var hllr__6 = ret.pop();
		var hllr__5 = ret.pop();
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({
               sExpand(hllr__1,hllr__2.data,hllr__4,hllr__6,null);
           }));
	}
	private static inline function R29(ret:Array<Dynamic>) {
		
		var hllr__9 = ret.pop();
		var hllr__8 = ret.pop();
		var hllr__7 = ret.pop();
		var hllr__6 = ret.pop();
		var hllr__5 = ret.pop();
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({
               var name = switch(cast hllr__3.pop()) {
                   case sIdent(x): x;
                   default: null;
               };
               sDefine(hllr__2,hllr__1,hllr__3,name,hllr__5,hllr__7,null);
           }));
	}
	private static inline function R30(ret:Array<Dynamic>) {
		
		var hllr__9 = ret.pop();
		var hllr__8 = ret.pop();
		var hllr__7 = ret.pop();
		var hllr__6 = ret.pop();
		var hllr__5 = ret.pop();
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({
               var name = switch(cast hllr__3.pop()) {
                   case sIdent(x): x;
                   default: null;
               };
               sDefine(hllr__1,hllr__2,hllr__3,name,hllr__5,hllr__7,null);
           }));
	}
	private static inline function R31(ret:Array<Dynamic>) {
		
		var hllr__7 = ret.pop();
		var hllr__6 = ret.pop();
		var hllr__5 = ret.pop();
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({
               var name = switch(cast hllr__1.pop()) {
                   case sIdent(x): x;
                   default: null;
               };
               sDefine(null,false,hllr__1,name,hllr__3,hllr__5,null);
           }));
	}
	private static inline function R32(ret:Array<Dynamic>) {
		
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0.push(hllr__1); hllr__0; }));
	}
	private static inline function R33(ret:Array<Dynamic>) {
		
		ret.push(({ []; }));
	}
	private static inline function R34(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0; }));
	}
	private static inline function R35(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sNoise(','); }));
	}
	private static inline function R36(ret:Array<Dynamic>) {
		
		ret.push(({ null; }));
	}
	private static inline function R37(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sLocal;  }));
	}
	private static inline function R38(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sGlobal; }));
	}
	private static inline function R39(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sFile;   }));
	}
	private static inline function R40(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sObject; }));
	}
	private static inline function R41(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ sMethod; }));
	}
	private static inline function R42(ret:Array<Dynamic>) {
		
		ret.push(({ false; }));
	}
	private static inline function R43(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ true; }));
	}
	private static inline function R44(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ [sIdent(hllr__0.data)]; }));
	}
	private static inline function R45(ret:Array<Dynamic>) {
		
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__1.unshift(sNoise(hllr__0.data)); hllr__1; }));
	}
	private static inline function R46(ret:Array<Dynamic>) {
		
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__1.unshift(sIdent(hllr__0.data)); hllr__1; }));
	}
	private static inline function R47(ret:Array<Dynamic>) {
		
		var hllr__6 = ret.pop();
		var hllr__5 = ret.pop();
		var hllr__4 = ret.pop();
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ function (scope:MacroScope) return sMixin(scope,hllr__0.data,hllr__2,hllr__4,null); }));
	}
	private static inline function R48(ret:Array<Dynamic>) {
		
		var hllr__3 = ret.pop();
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ function (scope:MacroScope) return sMixin(scope,hllr__0.data,[],hllr__1,null); }));
	}
	private static inline function R49(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ }));
	}
	private static inline function R50(ret:Array<Dynamic>) {
		
		ret.push(({ }));
	}
	private static inline function R51(ret:Array<Dynamic>) {
		
		ret.push(({ []; }));
	}
	private static inline function R52(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0; }));
	}
	private static inline function R53(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0.push(hllr__2); hllr__0; }));
	}
	private static inline function R54(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ [hllr__0]; }));
	}
	private static inline function R55(ret:Array<Dynamic>) {
		
		ret.push(({ []; }));
	}
	private static inline function R56(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0; }));
	}
	private static inline function R57(ret:Array<Dynamic>) {
		
		var hllr__2 = ret.pop();
		var hllr__1 = ret.pop();
		var hllr__0 = ret.pop();
		ret.push(({ hllr__0.push(hllr__2.data); hllr__0; }));
	}
	private static inline function R58(ret:Array<Dynamic>) {
		
		var hllr__0 = ret.pop();
		ret.push(({ [hllr__0.data]; }));
	}
public static function stream(x:Array<Token>) {
	Terminal.initcons();
	var ret = new Array<Terminal>();
	for(i in x) {
		ret.unshift(Terminal.cons[i.id+1].inst(i.data));
		i.free();
	}

	ret.unshift(Terminal.DOLLAR);
	return ret;
}
}

class Terminal {
	public static var COMMA = new Terminal(15);
	public static var CONS = new Terminal(18);
	public static var DEFINE = new Terminal(8);
	public static var DOLLAR = new Terminal(0);
	public static var DOT = new Terminal(16);
	public static var ERROR = new Terminal(1);
	public static var EXPAND = new Terminal(9);
	public static var FILE = new Terminal(22);
	public static var FLOATER = new Terminal(6);
	public static var GLOBAL = new Terminal(21);
	public static var IDENT = new Terminal(2);
	public static var IMPORT = new Terminal(20);
	public static var INTEGER = new Terminal(5);
	public static var LBRACE = new Terminal(11);
	public static var LOCAL = new Terminal(23);
	public static var LPAREN = new Terminal(13);
	public static var METHOD = new Terminal(25);
	public static var MIMPORT = new Terminal(10);
	public static var MIXIN = new Terminal(7);
	public static var NEWFILE = new Terminal(26);
	public static var NOISE = new Terminal(27);
	public static var OBJECT = new Terminal(24);
	public static var PACKAGE = new Terminal(19);
	public static var RBRACE = new Terminal(12);
	public static var REGEXP = new Terminal(4);
	public static var RPAREN = new Terminal(14);
	public static var SEMI = new Terminal(17);
	public static var STRING = new Terminal(3);

	public var id:Int;
	public var data:Dynamic;

	public static var cons:Array<Terminal> = null;	public static inline function initcons() {
        if(cons==null) cons = [DOLLAR,ERROR,IDENT,STRING,REGEXP,INTEGER,FLOATER,MIXIN,DEFINE,EXPAND,MIMPORT,LBRACE,RBRACE,LPAREN,RPAREN,COMMA,DOT,SEMI,CONS,PACKAGE,IMPORT,GLOBAL,FILE,LOCAL,OBJECT,METHOD,NEWFILE,NOISE];
	}

	public function new(id:Int) {
		this.id = id;
	}
	public function inst(x:Dynamic) {
		var ret = new Terminal(id);
		ret.data = x;
		return ret;
	}
}

enum Action {
	aE;
	aS(n:Int);
	aR(r:Int);
	aA;
	aG(n:Int);
}